package ui

//@ Api 事件定义

// EventType 事件类型
type EventType uint8

// 事件类型
const (
	OnMouseDown EventType = (1 << iota) // 鼠标按下
	OnMouseMove                         // 鼠标移动
	OnMouseOut                          // 鼠标移开
	OnMouseOver                         // 鼠标移入
)

// EventCall 事件传递函数
type EventCall func(ID EventID, Type EventType, Data interface{})

// EventID 事件ID
type EventID int

// Event 事件接口
type Event interface {
	APIBase
	Add(
		X, Y, Z, W, H int, // 触发范围
		call EventCall, // 回调函数
	) EventID // 添加一个事件
	Delete(ID EventID)                                    // 删除一个事件
	Call(ID EventID, Type EventType, Data interface{})    // 调用事件
	Collision(X, Y int, Type EventType, Data interface{}) // 进行对象事件检测
}

// EventTypNameMapping 事件类型名称映射
var EventTypNameMapping = map[EventType]string{
	OnMouseDown: "OnMouseDown",
	OnMouseMove: "OnMouseMove",
	OnMouseOut:  "OnMouseOut",
	OnMouseOver: "OnMouseOver",
}
